home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windows Expert
/
Windows Expert.iso
/
windownt
/
kmglos.zip
/
TOC3.TTY
< prev
next >
Wrap
Text File
|
1993-01-29
|
5KB
|
133 lines
Contents Contents
Chapter 3 - NT Objects and Support for Drivers Chapter 3 - NT Objects and Support for Drivers
3.1 NT Executive Components and NT Drivers............3-1
3.2 Device Objects and Device Extensions..............3-7
3.2.1 Defining Device Extensions....................3-9
3.2.2 Creating a Device Object and Device Extension3-10
3.2.3 Initializing Driver-specific Device Objects and
Device Extensions...................................3-11
3.2.4 Setting Up Access to User Buffers............3-13
3.2.4.1 Using Buffered I/O.......................3-13
3.2.4.2 Using Direct I/O.........................3-15
3.2.4.3 Using Neither Direct Nor Buffered I/O....3-18
3.3 Adapter Objects and DMA.........................3-20
3.3.1 Map Registers................................3-21
3.3.2 Getting an NT Adapter Object.................3-23
3.3.3 Splitting Transfer Requests..................3-26
3.3.4 Using System DMA.............................3-28
3.3.4.1 Packet-based System DMA..................3-28
3.3.4.2 Common-buffer System DMA.................3-34
3.3.5 Using Busmaster DMA..........................3-38
3.3.5.1 Packet-based DMA.........................3-39
3.3.5.2 Common-buffer DMA........................3-46
3.4 Controller Objects...............................3-48
3.4.1 Creating a Controller Object with a Controller
Extension...........................................3-49
3.4.2 Allocating the Controller for I/O Operations.3-51
3.5 Interrupt Objects................................3-54
3.5.1 Getting a System-assigned Interrupt Vector, DIRQL,
and Processor Mask..................................3-54
3.5.2 Registering an ISR...........................3-56
3.6 DPC Objects......................................3-59
3.6.1 Registering and Queueing a DpcForIsr Routine.3-59
3.6.2 Registering and Queueing a CustomDpc Routine.3-62
3.7 Timer Objects with Associated DPCs...............3-64
3.7.1 Registering and Enabling an IoTimer Routine..3-65
3.7.2 Registering and Queueing a CustomTimerDpc Routine
3-67
3.8 Device Queue Objects and Interlocked Queues......3-70
3.8.1 Setting up a Device Queue Object and Queueing IRPs
3-71
3.8.2 Setting up an Interlocked Queue and Queueing IRPs
3-73
3.9 Kernel Dispatcher Objects for Drivers............3-76
3.9.1 Timer Objects................................3-78
3.9.2 Event Objects................................3-80
3.9.3 Semaphore Objects............................3-83
3.9.4 Mutex Objects................................3-86
Figures - Chapter 3 Figures - Chapter 3
Figure 3.1 Executive Component Support for Drivers..3-2
Figure 3.2 Device Object............................3-8
Figure 3.3 Buffered I/O for User Buffers...........3-14
Figure 3.4 Direct I/O on User Buffers..............3-16
Figure 3.5 Physical, Logical, and Virtual Address Mappings
3-22
Figure 3.6 Getting an Adapter Object...............3-24
Figure 3.7 Allocating the System DMA Controller....3-30
Figure 3.8 Programming the System DMA Controller...3-32
Figure 3.9 Allocating a Common Buffer for System DMA3-34
Figure 3.10 Allocating an Adapter Object for Busmaster DMA
3-40
Figure 3.11 Setting Up a Logical Range for DMA.....3-44
Figure 3.12 Allocating a Common Buffer for Busmaster DMA
3-46
Figure 3.13 Controller Object......................3-50
Figure 3.14 Allocating a Controller Object for I/O..3-52
Figure 3.15 Getting a System Vector and IRQL.......3-55
Figure 3.16 Setting Up Interrupt Objects...........3-56
Figure 3.17 Using a DPC Object for a DpcForIsr Routine3-60
Figure 3.18 Using a DPC Object for a CustomDpc Routine3-62
Figure 3.19 Using a Timer Object for an IoTimer Routine
3-66
Figure 3.20 Using Timer and DPC Objects for a
CustomTimerDpc Routine..............................3-68
Figure 3.21 Using a Device Queue Object............3-72
Figure 3.22 Using an Interlocked Queue.............3-74
Figure 3.23 Waiting on a Timer Object..............3-78
Figure 3.24 Waiting on an Event Object.............3-80
Figure 3.25 Waiting on a Semaphore Object..........3-84
Figure 3.26 Waiting on a Mutex Object..............3-88